home *** CD-ROM | disk | FTP | other *** search
/ IRIX Development Foundation 1.1 for IRIX 6.4 / SGI IRIX 6.4 Development Foundation 1.1.iso / relnotes / c++_dev / chA.z / chA
Text File  |  1998-03-26  |  3KB  |  131 lines

  1.  
  2.  
  3.  
  4.                                      - 1 -
  5.  
  6.  
  7.  
  8.           7.2.1 (BETA) C++ Release Notes
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.           DDDDooooccccuuuummmmeeeennnntttt NNNNuuuummmmbbbbeeeerrrr 000000007777....2222666600006666----000011110000
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.                                      - 2 -
  67.  
  68.  
  69.  
  70.           1.  _D_y_n_a_m_i_c__S_h_a_r_e_d__O_b_j_e_c_t_s
  71.  
  72.           A Dynamic Shared Object, or DSO, is an ELF format object
  73.           file, very similar in structure to an executable program but
  74.           with no "main".  It has a shared component, consisting of
  75.           shared text and read-only data; a private component,
  76.           consisting of data and the GOT (Global Offset Table);
  77.           several sections that hold information necessary to load and
  78.           link the object; and a liblist, the list of other shared
  79.           objects referenced by this object. Most of the libraries
  80.           supplied by SGI are available as dynamic shared objects.
  81.  
  82.           _N_O_T_E: When building a DSO containing C++ objects, the link
  83.                 step mmmmuuuusssstttt be performed using the _C_C command, instead
  84.                 of using _l_d directly. Follow the instructions in the
  85.                 _d_s_o(_5) man page exactly, except that you must
  86.                 substitute _C_C wherever that man page says _l_d.
  87.  
  88.           A DSO is relocatable at runtime; it can be loaded at any
  89.           virtual address.  A consequence of this is that all
  90.           references to external symbols must be resolved at runtime.
  91.           References from the private region (.e.g. from private data)
  92.           are resolved once at load-time; references from the shared
  93.           region (e.g. from shared text) must go through an
  94.           indirection table (GOT) and hence have a small performance
  95.           penalty associated with them.
  96.  
  97.           Code compiled for use in a shared object is referred to as
  98.           Position Independent Code (PIC), whereas non-PIC is usually
  99.           referred to as non-shared.  Non-shared code and PIC cannot
  100.           be mixed in the same object.
  101.  
  102.           At Runtime, eeeexxxxeeeecccc loads the main program and then loads rrrrlllldddd,,,,
  103.           the runtime linking loader, which finishes the exec
  104.           operation.  Starting with main's liblist, rrrrlllldddd loads each
  105.           shared object on the list, reads that object's liblist, and
  106.           repeats the operation until all shared objects have been
  107.           loaded.  Next, rrrrlllldddd allocates common and fixes up symbolic
  108.           references in each loaded object.  (This is necessary
  109.           because we don't know until runtime where the object will be
  110.           loaded.)  Next, each object's _i_n_i_t code is executed.
  111.           Finally, control is transferred to "__start".
  112.  
  113.           For a more complete discussion of DSOs, including answers to
  114.           questions frequently asked about them, see the _d_s_o(_5) man
  115.           page.
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.